As an increasing number of applications and services are being made available over networks such as the Internet, an increasing number of content, application, and service providers are turning to technologies such as remote resource sharing and cloud computing. Cloud computing, in general, is an approach to providing access to electronic resources through services, such as Web services, where the hardware and software used to support those services is dynamically scalable to meet the needs of the services at any given time. A user or customer typically will rent, lease, or otherwise pay for access to resources through the cloud, and thus does not have to purchase and maintain the hardware and/or software to provide access to these resources.
In many environments, a customer utilizing a cloud resource, such as a virtual server, must still obtain dedicated access to that server for at least a period of time. For example, certain cloud vendors charge for servers by the hour for an amount of resource capacity, and the customer must pay for that hour of capacity independent of how much capacity the customer actually utilizes. Such an approach can be particularly problematic when a customer has scheduled jobs or tasks that can occur concurrently, as the customer must obtain enough capacity to handle the concurrent tasks even though the capacity will be largely unused during other periods of time. Certain systems enable a customer to sell at least a portion of the resource capacity that has been provisioned for that customer to one or more other users, but such an approach generally enables those other users to obtain that capacity for a period of time that might prevent the customer from being able to utilize the capacity when needed. Further, the customer might have code that the customer wants executed on the resource, and the code would have to be reinstalled and a server or instance restarted each time the customer takes the resource back from another customer.